// ==UserScript== // @name 笔趣阁下载 仅供学习使用 // @namespace http://tampermonkey.net/ // @version 0.2 // @description 本脚本对所有笔趣阁标准模板生效, 添加新网站请在match标签中更改 // @author You // @match https://www.mibaoge.com/* // @match https://www.biqugeone.com/* // @match http://www.cits0871.com/* // @require https://code.jquery.com/jquery-3.1.1.min.js // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== (function() { 'use strict'; // Your code here... //新人第一次写油猴脚本,对js不是很熟悉,望对使用过程中的错误多多指正,多多包涵 //本脚本对所有笔趣阁标准模板生效 var time = 2000 //页面加载,需等待Dom节点加载完成,最小值2000 //检测localStorge是否存在 if(!document.getElementById("info") && localStorage.getItem("a0")==null){ alert("请转到书籍目录页面!"); }else{ if(localStorage.getItem("a0")==null){ localStorage.clear(); //如果存在就清空 var mainPage = window.location.host; localStorage.setItem("main", mainPage); var ah; var dll = document.getElementById("list").getElementsByTagName("dt"); //是否有最新章节目录 if(dll.length > 1){ ah = $("dl dt:eq(1)").nextAll("dd").children(); //如果有,只选择第二个dt之后的所有a元素 }else{ ah = document.getElementsByTagName("dl")[0].getElementsByTagName("a"); //如果没有,选择dl里的所有a元素 } var title = document.getElementById("info").getElementsByTagName("h1")[0].innerText;//获取书名 localStorage.setItem("title", title); //存入localstorage localStorage.setItem("numa", ah.length); for(let i = 0; i < ah.length; i++){ localStorage.setItem("a"+i, ah[i]); //从a0开始存入localstorage,直到全部章节结束 } localStorage.setItem("is", 0); //初始化计数器 } var n; var ltext = new Array(parseInt(localStorage.getItem("numa"))); //暂时存放全部文本数组 var cto = setInterval(function(){ //计时器,等待Dom节点加载完成 n = parseInt(localStorage.getItem("is")); //计数器放在localstroge里保存 window.location.href = localStorage.getItem("a"+n); //跳转页面到下一章 n = n + 1; localStorage.setItem("is", n); localStorage.setItem("text"+n, document.getElementsByTagName("h1")[0].innerText+" \n "+document.getElementById("content").innerText + " \n"); //获取标题和内容并存入localstorge }, time); for(var h = 0; h <= parseInt(localStorage.getItem("is")); h++){ ltext[h] = localStorage.getItem("text"+h); //把所有章节写入ltext数组 } if(parseInt(localStorage.getItem("is")) > parseInt(localStorage.getItem("numa")) && localStorage.getItem("text") == null){ clearInterval(cto); //章节全部加载完成后停止 localStorage.setItem("text", ltext.toString()); //数组内容存进localstorage downLoad(localStorage.getItem("text"), localStorage.getItem("title")+".txt"); //通过blob对象下载 alert("当前书籍下载完成"); window.location.href = 'https://www.baidu.com'; window.location.href = localStorage.getItem("main"); localStorage.clear(); } function downLoad(data, filename) { var url; if (!(data instanceof Array)) data = [data]; // 创建一个 blob 对象, 通过blob对象获取一个URL const blob = new Blob(data); url = URL.createObjectURL(blob); // 创建一个 A 标签 var a = document.createElement('a'); // 设置下载的文件名 必要,如果没有就不会下载文件,而是当成链接跳转 a.download = filename; // 将 A 标签 和URL关联上 a.href = url; // 不让我们创建的标签影响页面展现 a.style.display = "none"; // 添加标签 document.body.appendChild(a); // 触发 A 标签的点击 a.click(); // 将标签从元素上移除 a.remove(); a = null; } } })();